#include "dev_e53_led.h"
#include "main.h"

#if defined	(E53_SF1)
		#define SF1_LED_Pin GPIO_PIN_0
    #define SF1_LED_GPIO_Port GPIOA
#endif

#if defined	(E53_SC1)
    #define SF1_LED_Pin GPIO_PIN_9
    #define SF1_LED_GPIO_Port GPIOB
#endif

#if defined (E53_IA1)
    #define IA1_LED_Pin GPIO_PIN_0
    #define IA1_LED_GPIO_Port GPIOA
#endif

#if defined	(E53_ST1)
		#define ST1_LED_Pin GPIO_PIN_0
    #define ST1_LED_GPIO_Port GPIOA
#endif



void LED_GPIO_Init(void)
{
		#if defined	(E53_ST1)
		GPIO_InitTypeDef GPIO_InitStruct = {0};
    __HAL_RCC_GPIOA_CLK_ENABLE();
    HAL_GPIO_WritePin(ST1_LED_GPIO_Port, ST1_LED_Pin, GPIO_PIN_RESET);
    GPIO_InitStruct.Pin = ST1_LED_Pin;
    GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
    GPIO_InitStruct.Pull = GPIO_NOPULL;
    GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH;
    HAL_GPIO_Init(ST1_LED_GPIO_Port, &GPIO_InitStruct);
		#endif
	
		#if defined	(E53_SF1)
		GPIO_InitTypeDef GPIO_InitStruct = {0};
    __HAL_RCC_GPIOA_CLK_ENABLE();
    HAL_GPIO_WritePin(SF1_LED_GPIO_Port, SF1_LED_Pin, GPIO_PIN_RESET);
    GPIO_InitStruct.Pin = SF1_LED_Pin;
    GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
    GPIO_InitStruct.Pull = GPIO_NOPULL;
    GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH;
    HAL_GPIO_Init(SF1_LED_GPIO_Port, &GPIO_InitStruct);
		#endif
	
    #if defined	(E53_SC1)
    GPIO_InitTypeDef GPIO_InitStruct = {0};
    __HAL_RCC_GPIOB_CLK_ENABLE();
    HAL_GPIO_WritePin(SF1_LED_GPIO_Port, SF1_LED_Pin, GPIO_PIN_RESET);
    GPIO_InitStruct.Pin = SF1_LED_Pin;
    GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
    GPIO_InitStruct.Pull = GPIO_NOPULL;
    GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH;
    HAL_GPIO_Init(SF1_LED_GPIO_Port, &GPIO_InitStruct);
    #endif
    #if defined (E53_IA1)
    GPIO_InitTypeDef GPIO_InitStruct = {0};
    __HAL_RCC_GPIOA_CLK_ENABLE();
    HAL_GPIO_WritePin(IA1_LED_GPIO_Port, IA1_LED_Pin, GPIO_PIN_RESET);
    GPIO_InitStruct.Pin = IA1_LED_Pin;
    GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
    GPIO_InitStruct.Pull = GPIO_NOPULL;
    GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH;
    HAL_GPIO_Init(IA1_LED_GPIO_Port, &GPIO_InitStruct);
    #endif
}


void led_dev_init(void)
{
    LED_GPIO_Init();
}

void led_dev_control(uint8_t status)
{
    switch(status)
    {
        case 0:
            #if defined	(E53_SF1) || defined	(E53_SC1)
            HAL_GPIO_WritePin(SF1_LED_GPIO_Port, SF1_LED_Pin, GPIO_PIN_RESET);
            #endif
            #if defined (E53_IA1)
            HAL_GPIO_WritePin(IA1_LED_GPIO_Port, IA1_LED_Pin, GPIO_PIN_RESET);
            #endif
						#if defined (E53_ST1)
            HAL_GPIO_WritePin(ST1_LED_GPIO_Port, ST1_LED_Pin, GPIO_PIN_RESET);
            #endif
            break ;

        case 1:
            #if defined	(E53_SF1) || defined	(E53_SC1)
            HAL_GPIO_WritePin(SF1_LED_GPIO_Port, SF1_LED_Pin, GPIO_PIN_SET);
            #endif
            #if defined (E53_IA1)
            HAL_GPIO_WritePin(IA1_LED_GPIO_Port, IA1_LED_Pin, GPIO_PIN_SET);
            #endif
						#if defined (E53_ST1)
            HAL_GPIO_WritePin(ST1_LED_GPIO_Port, ST1_LED_Pin, GPIO_PIN_SET);
            #endif
            break ;

        default:
            break ;
    }
}

e53_led_dev led_dev =
{
    .e53_led_init	=	led_dev_init,
    .e53_cotr_led	=	led_dev_control,
};


